<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))){
    
    switch(getParam('operation')){
      case 's':
          save($db);
          break;
          die();
      case 'u':
          update($db);
          break;
      case 'd':
          delete($db);
          break;
      case 'drawEmpresa':
            drawEmpresa($db);
            die();
            break;
      case 'drawTree':
            drawTreeConta($db);
            die();
            break;
      case 'scp':
            serchCuentaPadre($db);
            die();
            break;
      case 'scs':
            SetCuentaSiguiente($db);
            die();
            break;
    }
}

function save($db){

    $strFormName = getParam("strFormName");
    $numero = getParam("txt{$strFormName}_Numero");
    $nombre = getParam("txt{$strFormName}_Nombre");
    $empresa = getParam("empresa");
    $origen = getParam("rad{$strFormName}_Origen");
    $padre = getParam("hdnHija_Padre",0);
    
    if( $origen == "D") {
        
        $activo = 1; 
        $pasivo = 0; 
    }
    if( $origen == "H") {
        
        $activo = 0; 
        $pasivo = 1; 
    }
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE codigo = '{$numero}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    $db->free_result($qTMP);
    if( $intNumRows == 0 ) {
        
        $db->query_insert('cllg_contab_cuenta', array('codigo'=>"'".$numero."'", 'nombre'=>"'".$nombre."'", 'fk_padre'=>"'".$padre."'", 'activo'=>"'".$activo."'", 'pasivo'=>"'".$pasivo."'", 'fk_empresa'=>"'".$empresa."'") );
        
    }
    
}

function getContaHijas($db, $strPadre ) {

    $arrCuentas = array();
    $empresa = getParam("empresa");
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE fk_padre = '{$strPadre}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    
    while ( $rTMP = $db->fetch_array($qTMP) ) {
        
        $arrCuentas[$rTMP["codigo"]." - ".$rTMP["nombre"]] = getContaHijas($db, $rTMP["codigo"]);
        
    }
    $db->free_result($rTMP);
    
    return $arrCuentas;
    
}

function drawTreeConta($db) {
    
    $arrTMP = getContaHijas($db, 0 );
    
    
    //drawDebug($arrTMP);
    
    while ( $arrTMP1 = each($arrTMP) ) {
        
        if(  is_array($arrTMP1) && count($arrTMP1["value"]) > 0 ) {
            
            print "<li class='expandable'><div class='hitarea expandable-hitarea'></div><a href='#'>".$arrTMP1["key"]."<ul style='display: none;'>";
            
            while ( $arrTMP2 = each($arrTMP1["value"]) ) {
               
                if(  is_array($arrTMP2) && count($arrTMP2["value"]) > 0 ) {
                    
                    print "<li class='expandable'><div class='hitarea expandable-hitarea'></div><a href='#'>".$arrTMP2["key"]."<ul style='display: none;'>";
                    
                    while ( $arrTMP3 = each($arrTMP2["value"]) ) {
               
                        if(  is_array($arrTMP3) && count($arrTMP3["value"]) > 0 ) {
                            
                            print "<li class='expandable'><div class='hitarea expandable-hitarea'></div><a href='#'>".$arrTMP3["key"]."<ul style='display: none;'>";
                            
                            while ( $arrTMP4 = each($arrTMP3["value"]) ) {
               
                                if(  is_array($arrTMP4) && count($arrTMP4["value"]) > 0 ) {
                                    
                                    print "<li class='expandable'><div class='hitarea expandable-hitarea'></div><a href='#'>".$arrTMP4["key"]."<ul style='display: none;'>";
                                    
                                    while ( $arrTMP5 = each($arrTMP4["value"]) ) {
               
                                        if(  is_array($arrTMP5) && count($arrTMP5["value"]) > 0 ) {
                                            
                                            print "<li class='expandable'><div class='hitarea expandable-hitarea'></div><a href='#'>".$arrTMP5["key"]."<ul style='display: none;'>";
                                            
                                            while ( $arrTMP6 = each($arrTMP5["value"]) ) {                                          


                                               
                                            }
                                            print "</ul></li>"; 
                                            
                                        }
                                        else {
                                            
                                            print "<li><a href='#'>".$arrTMP5["key"]."</a></li>";
                                            
                                        }                                          

                                    }
                                    print "</ul></li>"; 
                                    
                                }
                                else {
                                    
                                    print "<li><a href='#'>".$arrTMP4["key"]."</a></li>";
                                    
                                }                                                       
                               
                            }
                            print "</ul></li>"; 
                            
                        }
                        else {
                            
                            print "<li><a href='#'>".$arrTMP3["key"]."</a></li>";
                            
                        }

                    }
                    print "</ul></li>"; 
                    
                }
                else {
                    
                    print "<li><a href='#'>".$arrTMP2["key"]."</a></li>";
                    
                }
               
            }
            print "</ul></li>"; 
            
        }
        else {
            
            print "<li><a href='#'>".$arrTMP1["key"]."</a></li>";
            
        }

    }
    
}

function serchCuentaPadre($db) {
    $arrResult = array();
    $empresa = getParam("empresa");
    $term = getParam("term");
    
    $strQuery = "SELECT mascara FROM cllg_contab_empresa WHERE codigo = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $rTMP = $db->fetch_array($qTMP);
    $intNiveles = count( explode( ",", $rTMP["mascara"] ) );
    $db->free_result($rTMP);
    
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE (codigo LIKE '%{$term}%' OR nombre LIKE '%{$term}%') AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
        
    if( $rTMP = $db->fetch_array($qTMP) ) {

        do {
            $arrPartes = explode(".", $rTMP["codigo"]);
            if( count($arrPartes) < $intNiveles ) {
                $arrTMP =  array();
                $arrTMP["id"] = utf8_encode($rTMP["codigo"]);
                $arrTMP["value"] = utf8_encode( $rTMP["codigo"]." - ".$rTMP["nombre"]);
                
                array_push($arrResult,$arrTMP);
            }
            
        } while ($rTMP = $db->fetch_array($qTMP));
        
    }
    $db->free_result($rTMP);
    
    print   json_encode($arrResult);
    
}

function SetCuentaSiguiente($db) {
    
    $arrMacara = array();
    $arrResult = array();
    $arrCodigo = array();
    $strMascara = "";
    $empresa = getParam("empresa");
    $ccPadre = getParam("ccPadre");
    
    $strQuery = "SELECT * FROM cllg_contab_empresa WHERE codigo = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    while ($rTMP = $db->fetch_array($qTMP)) {
        $strMascara = $rTMP["mascara"];
    }
    $arrMacara = explode(",",$strMascara);
    //$arrMacara = array(1,2,3,3,3);
    $arrValorFin = array(9,99,999,9999,99999);
    
    $arrExplode = explode(".", $ccPadre);
    $intExplode = count($arrExplode);
    
    $intValorEncontrado = 1;
    $strQuery = "SELECT * FROM cllg_contab_cuenta WHERE fk_padre = '{$ccPadre}' AND fk_empresa = '{$empresa}'";
    $qTMP = $db->query($strQuery);
    $intNumRow = $db->num_rows;
    //drawDebug($intNumRow);    
    if( $intNumRow ) {

        while ($rTMP = $db->fetch_array($qTMP)) {
            
            $arrExplodeCod = explode(".",$rTMP["codigo"]);
            $intUltimo = intval(array_pop($arrExplodeCod));
            $arrCodigo[$intUltimo] = $arrExplodeCod;
            
        }
        reset($arrCodigo);
        $intFin = $arrValorFin[$arrMacara[$intExplode]-1];
        
        $intValorEncontrado = 0;
        for( $i=1; $i<=$intFin;$i++ ) {
            
            if( !isset($arrCodigo[$i]) ) {
                $intValorEncontrado = $i;
                break;  
            }
             
        }
        
        
    }
    $db->free_result($qTMP);
    
    $intLenValorEncontrado = strlen(strval($intValorEncontrado));
    
    $strCeros = "";
    $intFinJ = 0;
    if( $intLenValorEncontrado == $arrMacara[$intExplode] ) {
        $intFinJ = 0;
    }
    else if( $intLenValorEncontrado < $arrMacara[$intExplode] ) {
        
        $intFinJ = $arrMacara[$intExplode] - $intLenValorEncontrado;
        for( $j = 1; $j <= $intFinJ; $j++ ){
            $strCeros .= "0";
        }
        
    }
    
    $arrTMP = array();
    $arrTMP["id"] = $ccPadre.".".$strCeros.$intValorEncontrado;
    
    
    print   json_encode($arrTMP);
    
}
?>